// 字节语音双呼
import request from '@/utils/request'
import { Message } from 'element-ui'

const codeToError = {
  101: '呼叫成功',
  102: '稍后您的电话将会收到来自“今日头条广告热线”的来电，接听即可和用户通话',
  103: '直接吊起拨号盘，无提示',
  402: '线索不存在',
  403: '为响应国家号召，降低用户投诉，请勿在非可呼时间回访用户',
  404: '该线索45天内无接通记录，为降低用户投诉风险，平台不提供外呼能力，感谢理解',
  405: '拨打失败，请检查您的电话号码',
  406: '拨打失败，线索号码异常',
  407: '呼叫中心繁忙1，请稍后再试',
  408: '呼叫中心繁忙2，请稍后再试',
  409: '呼叫中心繁忙3，请稍后再试',
  410: '非字节线索不支持电话回访',
  411: '不支持对线索电话二次编辑后呼叫',
  4121: '呼叫频繁，该线索5分钟内被拨打2次，受到频控限制，请稍后重试',
  4122: '呼叫频繁，该线索1小时内被拨打3次，受到频控限制，请稍后重试',
  4123: '呼叫频繁，该线索24小时内被拨打4次，受到频控限制，请稍后重试',
  4124: '呼叫频繁，该线索72小时内被拨打6次，受到频控限制，请稍后重试',
  4125: '呼叫频繁，该线索5天内被拨打10次，受到频控限制，请稍后重试',
  4126: '呼叫频繁，该线索30天内被拨打15次，受到频控限制，请稍后重试',
  415: '该账户涉及违规业务，已被平台禁止外呼',
  421: '该账户涉及违规业务，已被平台禁止外呼',
  422: '呼叫受限，请稍后再试',
  4131: '号码冻结 该号码命中平台风控规则，被禁止拨打30天，冻结时间剩余：XX天',
  4132: '号码冻结 该号码命中平台风控规则，被禁止拨打30天，冻结时间剩余：XX天',
  4134: '号码冻结 该号码命中平台风控规则，被禁止拨打30天，冻结时间剩余：XX天',
  4135: '号码冻结 该号码命中平台风控规则，被禁止拨打30天，冻结时间剩余：XX天',

  4133: '号码冻结 该用户已将您投诉，请勿再次联系该号码',
  4136: '号码冻结 该用户已将您投诉，请勿再次联系该号码'
}

// advertiser_id必填	number	广告主id
// clue_id必填	number	线索id
// caller_number必填	string	主叫号码，必须为11位手机号码，否则呼叫失败。
// callee_number必填	string	被叫号码，即线索号码

export function virtualNumber(calleeNumber, callerNumber, clueId, advertiserId) {
  return request({
    url: '/call-center/api/v1/zijie/virtual-number',
    method: 'GET',
    params: {
      advertiserId, // 线索ID
      calleeNumber: calleeNumber, // 被叫号码，即线索号码
      callerNumber: callerNumber, // 主叫号码，必须为11位手机号码，否则呼叫失败
      clueId: clueId // 广告主ID
    },
    hiddenError: true
  }).then(res => {
    let data = res.data
    if (data.request_id) {
      if (![0, '0'].includes(data.code)) {
        Message.warning(data.message || '调用飞鱼接口失败!')
        return Promise.reject(data)
      }
      data = data.data
    }
    // call_result_code: 407
    // call_result_message: "呼叫中心繁忙，请稍后再试"
    // contact_id: "18de0837-213f-402c-80cd-45741d1079ef"
    // virtual_number: ""
    if ([100, 101, 103, '100', '101', '103'].includes(data.call_result_code)) {
      return data
    } else {
      Message.warning(data.call_result_message || '飞鱼接口返回失败!')
      return Promise.reject(data)
    }
  }).catch(err => {
    const msg = codeToError[err.code] || err.msg
    Message.warning(msg)
    return Promise.reject(err)
  })
}

